#ifndef INODE_H
#define INODE_H

#include <Types.h>
#include <List.h>
#include <asm.h>
#include <kstdio.h>

#define FRM_SIZE	4096

class Inode{
	uint32		id;
	char		*start_addr;
	size_t		size;
	public:
	Link	slibings;
		Inode(char *start, size_t sz){
			start_addr = start;
			size = sz;
		}
		uint32 readBlock(addr_t *addr, pg_size offset){
			/*оПНБЕПЪЕРЯЪ, МЮУНДХРЯЪ КХ ГЮОПНЬЕММШИ АКНЙ ДЮММШУ Б ТЮИКЕ. 
			еЯКХ МЕР, РН БНГБПЮЫЮЕРЯЪ ЙНД НЬХАЙХ NODATA. еЯКХ ГЮОПНЬЕММШИ 
			АКНЙ ДЮММШУ МЮУНДХРЯЪ Б ОПЕДЕКЮУ ТЮИКЮ, РН АКНЙ ДЮММШУ ЯВХРШБЮЕРЯЪ 
			ХГ ТЮИКНБНИ ЯХЯРЕЛШ. б ЯКСВЮЕ СЯОЕУЮ, БНГБПЮЫЮЕРЯЪ ЙНКХВЕЯРБН 
			ЯВХРЮММШУ АЮИР, ЙЮЙ ОПЮБХКН 4096.*/
			char *from_buf, *to_buf = (char *)addr;
			uint32 sz = 0, max_offset = size / FRM_SIZE;
			if(offset <= max_offset){
				from_buf = start_addr + offset * FRM_SIZE;
				if(offset == max_offset) sz = size - offset * FRM_SIZE;
				else sz = FRM_SIZE;
				kprintf("from: %X, to: %X, sz: %i\n", from_buf, to_buf, sz);
				memcpy(from_buf, to_buf, sz);
			}
			return sz;
		}
		uint32 writeBlock(addr_t *addr, pg_size offset){
			
		}
};

#endif /* INODE_H */

